Within an object-oriented environment, objects are memory-resident elements in which data and functionality are merged. An object contains data of one or more data types (e.g., an integer, date, time and/or string) and contains methods, typically in the form of code, which define the useful operations of the object. Operations on the data of a particular object are triggered by reception of a message that identifies the desired function. For example, an object having an integer may receive a message that requires a step of multiplication with another integer. A message is received via an object interface.
An object in an object-oriented environment is characterized by its attributes, i.e., the count, types and values of the data. Each object tracks its own attributes. While some attribute values may be fixed, attributes are often variable.
As noted in U.S. Pat. No. 5,303,379 to Khoyi et al., objects are typically linked. That is, the data structures of the objects are interconnected. Linking allows dynamic copying of data or information from one data structure to another, so that the destination data structure is provided with the most recent version of the data residing in the source data structure. A link is defined in the Khoyi et al. patent as a means by which one object (a "child object") is connected to another object (a "parent object"). The data of the parent and child objects may be linked dynamically or statically. For dynamic linking, the data are read from the child object and provided to the parent object each time that the link is updated. This updating feature is distinguishable from the copying feature. A static link is one in which updating of one of the objects does not affect data in the other object.
An object-oriented environment also includes other types of links. As previously noted, each object tracks its own attributes. However, "classes" of objects possess similar attributes. The objects of a single class possess the same methods and the same data types and respond to the same messages, but are distinguishable from each other by the attribute values. Classes may be organized into a hierarchy of superclasses and subclasses, with a subclass inheriting the messages and methods of its superclass. In addition to the inherited messages and methods, objects of the subclass may include subclass-specific messages and methods.
One advantage of the object-oriented environment is the inherency feature. Inherency permits a program or programmer to take advantage of the commonality of objects in the manipulation of the objects. Another advantage of the environment is that it permits "polymorphism," i.e. the ability of an object to assume different forms of the object. While inheritance relates to slightly different data structure or behavior of objects in a single class, polymorphism relates to differences in data structure that lead to an object being in a derived class. Thus, polymorphism allows the same operation to behave differently within different classes. Other advantages of an object-oriented environment include faster program development and easier maintenance.
While conventional object-oriented environments provide clear advantages over other program environments, further improvements relating to specific capabilities are sought. For example, object-sharing among different programs on a single computer would allow users to further exploit the power of object-oriented programs and would decrease development time. Preferably, this object integration across program boundaries would also allow objects to be packaged and transported across a network. Another desired improvement relates to the sort and search utilities for objects. The conventional object-oriented programs perform well in sorting and searching through objects of a particular class, since these algorithms are generally provided along with the class. The desired mechanism would be to provide a general sort and search utility that would perform these operations on objects of different types without having to provide specific algorithms based on the type. Preferably, the utility should accept various attribute sort orders to sort the object in different ways.
Another concern in conventional object-oriented environments is that traversing links reduces operational speed. For example, if 1000 objects are linked and a messages requires access to entry 495 from entry 1, one-to-one linkages require 494 steps to access the selected object.
What is needed is a system and method for data processing objects such that the advantages and the power of object-oriented environments are enhanced. Also needed is such a system and method in which the speed of link traversals is increased.